/*
 * Copyright 2009 Frantisek Galcik
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package sk.upjs.jpaz2;

import java.awt.*;

/**
 * The basic interface prescribing basic methods for all objects able to live on
 * a pane.
 */
public interface PaneObject {
    /**
     * Gets the parent pane.
     */
    Pane getPane();

    /**
     * Sets the parent pane. The pane object is first removed from its current
     * parent pane and later added to the desired parent pane.
     * 
     * @param p
     *            the new parent pane
     */
    void setPane(Pane p);

    /**
     * Draws the visual representation of the object to the given graphics
     * considering that it is graphics of the parent pane.
     * 
     * @param g
     *            the graphics used to draw the object
     */
    void paintToPaneGraphics(Graphics2D g);
}
